The invention disclosed herein relates generally to computing and data storage. More specifically, the invention relates to the operation of a distributed cache system.
In computer systems, a cache is a data structure that stores data so that future requests for that data can be processed faster. For example, the data that is stored within a cache might consist of data that has been computed earlier or it may consist of duplicates of data that is originally stored elsewhere (e.g., a database), in an application system. Frequently, repeated accesses to the same data in the application system may be required. By providing access to such data in a cache, the time required to respond to a request for such data can be shortened. Use of caches can substantially reduce system performance time in some application systems. Usually, if requested data is contained in a cache (cache hit), a computer system may service the request simply by reading the cache. If the requested data results in a cache miss, the computer system may then recompute or fetch the data from an original storage location, which takes more time.
In the past, an application system usually only employed one cache. In modern systems requiring a large number of data accesses, frequently, a distributed cache system is deployed that utilizes multiple caches distributed over more than one location. For example, a distributed cache system may include a local cache located within or in proximity to an application server, as well as a remote cluster of cache servers, which are accessible to the application. The use of multiple caches allows for larger cache sizes. As a side benefit, providing multiple caches allows for the possibility of selective use of caches. It would be advantageous to improve the performance of distributed cache systems to provide faster response times for data accesses in an application system by intelligently allocating cache requests to caches in a distributed cache system.